<?php
declare (strict_types = 1);

namespace app\model;

use think\Model;

/**
 * @property bool $gender 性别
 * @property bool $level 等级:1=普通用户,2=创客,3=合伙人,4=高级合伙人,5=战略合伙人
 * @property bool $loginfailure 失败次数
 * @property float $money 余额
 * @property int $group_id 组别ID
 * @property int $id ID
 * @property int $jointime 加入时间
 * @property int $logintime 登录时间
 * @property int $maxsuccessions 最大连续登录天数
 * @property int $pid
 * @property int $prevtime 上次登录时间
 * @property int $score 积分
 * @property int $successions 连续登录天数
 * @property int $updatetime 更新时间
 * @property int $vip_expiretime 会员过期时间
 * @property string $avatar 头像
 * @property string $bio 格言
 * @property string $birthday 生日
 * @property string $city 城市
 * @property string $createtime 创建时间
 * @property string $email 电子邮箱
 * @property string $invitecode
 * @property string $joinip 加入IP
 * @property string $loginip 登录IP
 * @property string $mobile 手机号
 * @property string $nickname 昵称
 * @property string $openid
 * @property string $password 密码
 * @property string $salt 密码盐
 * @property string $status 状态
 * @property string $token Token
 * @property string $trade_password 交易密码
 * @property string $truename 姓名
 * @property string $username 用户名
 * @property string $verification 验证
 * @property string $wechat 微信
 * @property-read \app\model\User $parent
 * @property-read \app\model\UserVipChild[] $vip_child
 * @property-read \app\model\User[] $child
 * @property-read mixed $level_text
 * @property-read mixed $mobile_text
 * @property-read mixed $vip_expiretime_text
 * @mixin \think\Model
 */
class User extends Model
{
	protected $createTime = 'createtime';
	
	protected $hidden = [
		'password','salt'
	];
	
	protected $append = [
		'level_text',
		'mobile_text',
		'vip_expiretime_text'
	];
	
	function parent()
	{
		return $this->belongsTo(User::class,'pid');
	}
	
	function child()
	{
		return $this->hasMany(User::class,'pid');
	}
	
	function vipChild()
	{
		return $this->hasMany(UserVipChild::class,'user_id');
	}
	
	
	
	function getLevelTextAttr($value,$data)
	{
		$value = $value ? $value : ($data['level'] ?? '');
		$list = ['1' => '普通用户', '2' => '创客', '3' => '合伙人', '4' => '督导', '5' => '总监'];
		return $list[$value] ?? '';
	}
	
	function getVipExpiretimeTextAttr($value,$data)
	{
		
		$value = $value ?? ($data['vip_expiretime'] ?? "");
		return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
	}
	
	function getMobileTextAttr($value,$data)
	{
		
		$value = $value ?? ($data['mobile'] ?? "");
		return !empty($value) ? substr_replace($value, '****', 3, 4) : $value;
	}
	
}
